﻿#region << 文 件 说 明 >>

/*----------------------------------------------------------------
// 文件名称：IAppConfig
// 创 建 者：杨程
// 创建时间：2021/9/7 15:18:29
// 文件版本：V1.0.0
// ===============================================================
// 功能描述：
//
//
//----------------------------------------------------------------*/

#endregion

namespace Vampirewal.Core.Interface;

/// <summary>
/// 应用程序配置服务
/// </summary>
public interface IVampirewalCoreAppConfig
{
    /// <summary>
    /// 加载或热更新配置（支持依赖注入）
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <returns></returns>
    T LoadOption<T>() where T :  IOptions, new();

    /// <summary>
    /// 保存单个配置
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="config"></param>
    void SaveOption<T>(T config) where T :  IOptions, new();

    /// <summary>
    /// 保存所有配置
    /// </summary>
    void SaveAllOption();
}


/// <summary>
/// 配置容器
/// </summary>
/// <typeparam name="TConfig"></typeparam>
public interface IConfigContainer<TConfig> where TConfig : IOptions, new()
{
    /// <summary>
    /// 配置内容
    /// </summary>
    TConfig Value { get; }
}